Internet
The Internet is a global network of computers and computers networks (the “Net”). The Internet connects computers that use a variety of different operating systems or languages, including UNIX, DOS, Windows, Macintosh, and others. To facilitate and allow the communication among these various systems and languages, the Internet uses a protocol referred to as TCP/IP (“Transmission Control Protocol/Internet Protocol”). TCP/IP protocol supports three basic applications on the Internet:                transmitting and receiving electronic mail,        logging into remote computers (the “Telnet”), and        transferring files and programs from one computer to another (“FTP” or “File Transfer Protocol”).World Wide Web        
With the increasing size and complexity of the Internet, tools have been developed to help find information on the network, often called navigators or navigation systems. Navigation systems that have been developed include standards such as Archie, Gopher and WAIS. The World Wide Web (“WWW” or “the Web”) is a recent superior navigation system. The Web is:                an Internet-based navigation system,        an information distribution and management system for the Internet, and        a dynamic format for communicating on the Web.The Web seamlessly, for the user, integrates the formatting of information, including still images, text, audio and video. A user on the Web using a graphical user interface (“GUI”, pronounced “gooey”) may transparently communicate with different host computers on the system, and different system applications (including FTP and Telnet), and different information formats for files and documents including, for example, text, audio and image (graphics).Hypermedia        
The Web uses hypertext and hypermedia. Hypertext is a subset of hypermedia and refers to computer-based “documents” in which readers move from one place to another in a document, or to another document, in a non-linear manner. To do this, the Web uses a client-server architecture. The Web servers enable the user to access hypertext and hypermedia information through the Web and the user's computer. (The user's computer is referred to as a client computer of the Web Server computers.) The clients send requests to the Web Servers, which react, search and respond. The Web allows client application software to request and receive hypermedia documents (including formatted text, audio, video and graphics) with hypertext link capabilities to other hypermedia documents, from a Web file server.
The Web, then, can be viewed as a collection of document files residing on Web host computers that are interconnected by hyperlinks using networking protocols, forming a virtual “web” that spans the Internet.
Uniform Resource Locators
A resource of the Internet is unambiguously identified by a Uniform Resource Locator (URL), which is a pointer to a particular resource at a particular location. A URL specifies the protocol used to access a server (e.g. HTTP, FTP, . . . ), the name of the server, and the location of a file on that server.
Hyper Text Transfer Protocol
Each Web page that appears on client monitors of the Web may appear as a complex document that integrates, for example, text, images, sounds and animation. Each such page may also contain hyperlinks to other Web documents so that a user at a client computer using a mouse may click on icons and may activate hyperlink jumps to a new page (which is a graphical representation of another document file) on the same or a different Web server.
A Web server is a software program on a Web host computer that answers requests from Web clients, typically over the Internet. All Web servers use a language or protocol to communicate with Web clients which is called Hyper Text Transfer Protocol (“HTTP”). All types of data can be exchanged among Web servers and clients using this protocol, including Hyper Text Markup Language (“HTML”), graphics, sound and video. HTML describes the layout, contents and hyperlinks of the documents and pages. Web clients when browsing:                convert user specified commands into HTTP GET requests,        connect to the appropriate Web server to get information, and        wait for a response. The response from the server can be the requested document or an error message.        
After the document or an error message is returned, the connection between the Web client and the Web server is closed.
The first version of HTTP is a stateless protocol. That is with HTTP, there is no continuous connection between each client and each server. The Web client using HTTP receives a response as HTML data or other data. This description applies to version 1.0 of HTTP protocol, while the newer versions 1.1 breaks this barrier of stateless protocol by keeping the connection between the server and client alive under certain conditions.
Browser
After receipt, the Web client formats and presents the data or activates an ancillary application such as sound player to present the data. To do this, the server or the client determines the various types of data received. The Web Client is also referred to as the Web Browser, since it in fact browses documents retrieved from the Web Server.
Domain Names
The host or computers names (like www.entreprise.com) are translated into numeric Internet addresses (like 194.56.78.3), and vice versa, by using a method called DNS (“Domain Name Service”). DNS is supported by network-resident servers, also known as domain name servers or DNS servers.
Intranet
Some companies use the same mechanism as the Web to communicate inside their own corporation. In this case, this mechanism is called an “Intranet”. These companies use the same networking/transport protocols and locally based Web servers to provide access to vast amount of corporate information in a cohesive fashion. As this data may be private to the corporation, and because the members of the company still need to have access to public Web information, to avoid that people not belonging to the company can access to this private Intranet coming from the public Internet, they protect the access to their network by using a special equipment called a Firewall.
Firewall
A Firewall protects one or more computers with Internet connections from access by external computers connected to the Internet. A Firewall is a network configuration, usually created by hardware and software, that forms a boundary between networked computers within the Firewall from those outside the Firewall. The computers within the Firewall form a secure sub-network with internal access capabilities and shared resources not available from the outside computers.
Often, a single machine, on which the Firewall is, allows access to both internal and external computers. Since the computer, on which the Firewall is, directly interacts with the Internet, strict security measures against unwanted access from external computers are required.
A Firewall is commonly used to protect information such as electronic mail and data files within a physical building or organization site. A Firewall reduces the risk of intrusion by unauthorized people from the Internet, however, the same security measures can limit or require special software for those inside the Firewall who wish to access information on the outside. A Firewall can be configured using “Proxies” or “Socks” to designate access to information from each side of the Firewall.
Proxy Server
A HTTP Proxy is a special server that typically runs in conjunction with Firewall software and allows an access to the Internet from within a Firewall. The Proxy Server:                waits for a request (for example a HTTP request) from inside the Firewall,        forwards the request to the remote server outside the Firewall,        reads the response, and        sends the response back to the client.        
A single computer can run multiple servers, each server connection identified with a port number. A Proxy Server, like an HTTP Server or a FTP Server, occupies a port. Typically, a connection uses standardized port numbers for each protocol (for example, HTTP=80 and FTP=21). That is why an end user has to select a specific port number for each defined Proxy Server. Web Browsers usually let the end user set the host name and port number of the Proxy Servers in a customizable panel. Protocols such as HTTP, FTP, Gopher, WAIS, and Security can usually have designated Proxies. Proxies are generally preferred over Socks for their ability to perform caching, high-level logging, and access control, because they provide a specific connection for each network service protocol.
Socks
A Socks Server (also called a Socks Gateway) is also software that allows computers inside a Firewall to gain access to the Internet. Socks is usually installed on a server positioned either inside or on the Firewall. Computers within the Firewall access the Socks Server as clients to reach the Internet. Web Browsers usually let the end user set the host name and port number of the Socks hosts (servers) in a customizable panel. On some Operating Systems, the host is specified in a separate file (e.g. socks.conf file). As the Socks Server acts as a layer underneath the protocols (HTTP, FTP, . . . ), it cannot cache data (as a Proxy does), because it doesn't decode the protocol to know what kind of data, it is transferring.
Options
The Web Browser often proposes that the end user select between the different options of “No Proxies”, “Manual Proxy Configuration”, or “Automatic Proxy Configuration” to designate the conduit between his computer and the Internet.                Users with a direct connection to the Internet should use the default, which is “No Proxies”.        If the Intranet is protected by one or several Firewalls, the end user may:                    select one of these Firewalls as the elected Proxy, by entering its host name into the “Manual Proxy Configuration”, or            automatically refer to the enterprise policy in terms of Proxy attribution between locations, by pointing to a common configuration file in a remote server. This is done by choosing the “Automatic Proxy Configuration” and by providing the Web Browser with the unique address of the common configuration file (“Universal Resource Locator” or “URL”) located in the remote server.                        
Today, most of the Web Browsers are configured to forward all requests, even requests for internal hosts, through the Socks Firewall. So when the end user wants to have access to an internal Web-based application, his request travels to the Firewall, and is then reflected back into the internal network. This sends internal traffic on a long path, puts extra load on the Firewall and on the network, and worst of all, slows down the response time the end user sees from the applications and Web pages he is trying to access. This is called “non flexible” Socks access (when everything goes via the Socks Server).
Manual Proxy Configuration
The Manual Proxy configuration in the Web Browser is simple to process, but its main drawback is that the Firewall (or Proxy) selection is then static. There is no dynamic criterion for the Firewall selection, such as selection of the Firewall providing the best response time. Firewall failures require a manual reconfiguration of the navigation software to point to another active Firewall, since the manual configuration usually only allows the definition of one single Firewall per protocol with no possibility to pre-configure a backup Firewall. In addition to the manual proxy configuration in the Web Browser, external procedures can be used to provide some kind of robustness in the Firewall selection. They rely for instance on the use of multiple Firewalls having the same name defined as aliases in the Domain Name Server (DNS). But this technique based on alias definition still has drawbacks since for instance the DNS is not always contacted for name resolution by Web Clients caching locally the name resolution. Other techniques using external hardware equipment such as load and request dispatcher provide more robustness and load balancing, but still have drawbacks such as the need for additional and costly hardware.
Automatic Proxy Configuration
Automatic Proxy Configuration (or also referred to as “autoproxy”) can set the location of the HTTP, FTP, and Gopher Proxy every time the Web Browser is started. An autoproxy retrieves a file of address ranges and instructs the Web Browser to either directly access internal IBM hosts or to go to the Socks Server to access hosts on the Internet.
Automatic Proxy Configuration is more desirable than simple Proxy Server Configuration in the Web Browser, because much more sophisticated rules can be implemented about the way Web pages are retrieved (directly or indirectly). Automatic Proxy Configuration is useful to users, because the Web Browser knows how to retrieve pages directly if the Proxy Server fails. Also Proxy requests can be directed to another or multiple Proxy Servers at the discretion of the system administrator, without the end user having to make any additional changes to his Web Browser configuration. In general, these Proxy configuration files (also called autoproxy code) are usually written in the Javascript language. Autoproxy facility can also contain a file of address ranges for instructing the Web Browser to either directly access internal hosts or to go to the Socks Server to access hosts on the Internet. The Socks Server protects the internal network from unwanted public access while permitting access of network members to the Internet. One of the drawbacks of this “autoproxy” mechanism is that there is no proactive Firewall failure detection nor response time consideration.
More explanations about the domain presented in the above sections can be found in the following publications:    “Java Network Programming” by Elliotte Rusty Harold, published by O'Reilly, February 1997.    “Internet in a nutshell” by Valerie Quercia, published by O'Reilly, October 1997.    “Building Internet Firewalls” by Brent Chapman and Elizabeth Zwichky, published by O'Reilly, September 1995.Problem
The problem to solve is to provide an optimized Web access, with a dynamic Proxy or Socks Server selection to get the best response time, and a detection of failures in Proxy or Socks Server to prevent Web service disruption. The current solutions address this problem partially:                Web Browsers can be manually configured with the target Proxy or Socks Server. The main drawbacks of this solution are the following:                    There is no dynamic Proxy/Socks Server selection. A manual reconfiguration of the Web Browser upon Proxy/Socks Server failure is required.            Only a “manual” load balancing through the Web Browser static configuration is provided.            Proxy/Socks Server names must be known and manually configured by end users.                        Web Browsers can be configured with their autoproxy feature, using a static list of target Proxy/Socks Servers downloaded from a dedicated autoproxy URL (Uniform Resource Locator) system. The main drawback of this solution is the following:                    There is no response time consideration in the Proxy/Socks Server selection, nor efficient Proxy/Socks Server failure detection (i.e. Web Browser waits for time-out before switching to backup, even at initial autoproxy loading) in the Proxy/Socks Server selection.                        
An alternate to these current solutions is to cluster the Proxy/Socks Servers using an external dispatcher system acting as single logical access point. All Web Browsers are then manually configured with the name of that external dispatcher system (as the target Proxy/Socks Server) which then routes the traffic to a selected Proxy/Socks Server. An example of such a dispatcher is for example the IBM Interactive Network Dispatcher product. More information concerning this product can be found in IBM's publication entitled “Interactive Network Dispatcher V1.2-User's Guide” GC31-8496-01. Although a dispatcher oriented solution allows an efficient load balancing in most cases, its main drawback is that additional dedicated system or specific hardware is required, and that the external dispatcher name has to be manually configured by the end users in their Web Browsers.